struct tm
计算机语言
在标准C/C++中,我们可通过tm结构来获得日期和时间,tm结构在time.h中的定义如下:
基本信息
ANSI C标准称使用tm结构的这种时间表示为分解时间(broken-down time)。
tm_sec 有时会超过59,其中60表示闰秒。也有时候达到3位数。
格式转换
可以使用的函数是gmtime()和localtime()将time()获得的日历时间time_t结构体转换成tm结构体。
其中gmtime()函数是将日历时间转化为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间,而localtime()函数是将日历时间转化为本地时间。
程序举例
#include
#include <time.h>
int main(void)
{
struct tm *ptr;
time_t lt;
lt =time(NULL);
ptr=localtime(<);
return 0;
}
注意事项
通过自定义的指针(struct tm *)对tm结构体成员的引用不包含赋值操作,除非另外定义tm结构体变量。
例如:
struct tm *p={0};
之类的赋值操作都是非法的。
在linux下,通过自定义指针对tm结构体成员赋值操作编译可以通过,但执行会提示段错误Segmentation fault(coredump);在gdb模式下,会得到“Cannot access memory at address XXX”的警告。
如果要利用tm结构体成员保存时间数据,可以另外定义struct tm类型的变量。
例如:struct tm t;
t.tm_hour=14;
p->tm_hour=14;
如上的操作是合法的。
最新修订时间:2023-12-30 00:16
目录
概述
基本信息
格式转换
程序举例
参考资料